版本: ${JSver} 已启动,部分线路需要科学上网,更换AI接口请点击"设置"。当前线路: ${getGPTMode() || "Default"};当前自动点击状态: ${localStorage.getItem("autoClick") || "关闭"}
朗读
复制
原文
中断
全屏
隐藏
`;
resolve(divE)
})
}
let speakAudio;
let isPlayend = true;
async function pivElemAddEventAndValue(append_case) {
let search_content
try {
if (append_case === 11) {//手机google
search_content = document.querySelector("#tsf textarea").value
}
if (append_case === 10) {//手机sogou
search_content = document.querySelector("input#keyword").value
}
if (append_case === 9) {//手机360
search_content = document.querySelector("input#q").value
}
if (append_case === 8) {
search_content = document.querySelector("input#upquery").value
}
if (append_case === 7) {
search_content = document.querySelector("#search_form input").value
}
if (append_case === 5) {
search_content = document.getElementById("search-input").value
}
if (append_case === 4) {
search_content = document.getElementById("keyword").value
}
if (append_case === 3) {
search_content = document.querySelectorAll("input")[0].value
}
if (append_case === 2) {
search_content = document.getElementById('kw').value
}
if (append_case === 1) {
try {
search_content = document.querySelector(
"#tsf > div:nth-child(1) > div.A8SBwf > div.RNNXgb > div > div.a4bIc > input:nth-child(3)"
).value
} catch (e) {
search_content = document.querySelector("textarea").value
}
}
if (append_case === 0) {
search_content = document.getElementsByClassName('b_searchbox')[0].value
if (!search_content) {
search_content = document.querySelector("textarea[class='b_searchbox']").value;
}
}
} catch (e) {
console.log(e)
}
document.getElementById("gptInput").value = search_content || ''
document.getElementById('button_GPT').addEventListener('click', () => {
your_qus = document.getElementById("gptInput").value
//字体设置
if(your_qus.startsWith("/font-size:")){
let fontSize = your_qus.substring("/font-size:".length)
document.querySelector("#gptDiv").style.fontSize = fontSize;
localStorage.setItem("gpt_font_size",fontSize)
Toast.success(`字体设置成功:${fontSize}`)
return
}
//禁用历史记录
if(your_qus.startsWith("/history_disable:")){
let dis = your_qus.substring("/history_disable:".length)
history_disable = (dis === 'true' ? true : false);
localStorage.setItem("history_disable", dis)
Toast.success(`禁用历史记录设置成功:${history_disable}`)
return
}
do_it()
})
//搜索建议
document.getElementById('gptInput').addEventListener('keyup', () => {
console.log("autoTips:",autoTips)
if(autoTips !== 'on') return
let current;
let word = document.getElementById('gptInput').value;
if(!word) return;
if(current){
current.abort();
}
console.log(word)
current = GM_xmlhttpRequest({
method: "GET",
url: "https://www.baidu.com/sugrec?&prod=pc&wd="+encodeURIComponent(word),
responseType: "text",
onload:(r) => {
//console.log(r)
if (r.status === 200) {
//console.log(r);
let dataList = JSON.parse(r.responseText).g;
const su = document.querySelector('#suggestions');
su.innerHTML = '';
dataList && dataList.forEach(v => {
const optionElement = document.createElement('option');
optionElement.value = v.q;
optionElement.innerText = v.q;
su.appendChild(optionElement);
});
}
}
});
})
document.getElementById('updatePubkey').addEventListener('click', () => {
Toast.info("正在更新,请稍后...")
setPubkey()
})
document.getElementById('autoClick').addEventListener('click', () => {
if(autoClick){
localStorage.removeItem("autoClick")
autoClick = undefined;
Toast.error("自动点击已经关闭")
}else{
localStorage.setItem("autoClick", "开启")
autoClick = "开启"
Toast.success("自动点击已经开启")
}
})
document.getElementById('autoTips').addEventListener('click', () => {
if(autoTips === 'on'){
//关闭
localStorage.setItem("autoTips", "off")
autoTips = "off"
Toast.error("自动提示已关")
}else{
//开启
localStorage.setItem("autoTips", "on")
autoTips = "on"
Toast.success("自动提示已开启")
}
})
document.getElementById('darkTheme').addEventListener('click', () => {
try{
document.getElementById("github-markdown-link").remove()
document.getElementById("highlight-link").remove()
}catch (e) { console.error(e) }
if(darkTheme){
localStorage.removeItem("darkTheme")
darkTheme = undefined;
Toast.success("暗黑已经开启")
}else{
localStorage.setItem("darkTheme", "关闭")
darkTheme = "关闭"
Toast.error("暗黑已经关闭")
}
})
//朗读
document.getElementById('speakAnser').addEventListener('click', () => {
let ans = document.querySelector("#gptAnswer");
if(!isPlayend){
Toast.success('已暂停播放!');
speakAudio.pause();
isPlayend = true;
return;
}else {
Toast.warn('音频已停止,正在重新播放!')
}
if(ans){
// let speakText = encodeURIComponent(ans.innerText);
let speakText = ans.innerText;
//new sogou api
// 弹出对话框询问用户是否同意
const result = confirm("是否启用外国口音朗读? 默认为中文口音。");
let dialect = "zh-CHS"
if (result) {
dialect = "en"
console.log("英文朗读!");
}
let f = JSON.stringify({
curTime: Date.now(),
rate: "1",
spokenDialect: dialect,
text: speakText
})
let sParam = CryptoJS.AES.encrypt(f.replace(/^"|"$/g, ""), CryptoJS.enc.Utf8.parse("76350b1840ff9832eb6244ac6d444366"), {
"iv": CryptoJS.enc.Utf8.parse(atob("AAAAAAAAAAAAAAAAAAAAAA==") || "76350b1840ff9832eb6244ac6d444366"),
"mode": CryptoJS.mode.CBC,
"pad": CryptoJS.pad.Pkcs7
}).toString();
speakAudio = new Audio(`https://fanyi.sogou.com/openapi/external/getWebTTS?S-AppId=102356845&S-Param=${encodeURIComponent(sParam)}`);
speakAudio.play()
isPlayend = false;
speakAudio.addEventListener("ended",function() {
isPlayend = true;
Toast.success('音频已播放完毕!');
})
}
})
//原文切换
document.getElementById('rawAns').addEventListener('click', (ev) => {
let ans = document.querySelector("#gptAnswer");
if(!rawAns) {
Toast.error("原文无内容")
return
};
if(!isShowRaw){
ans.innerText = rawAns;
isShowRaw = true;
Toast.success("已为你显示原文")
}else{
showAnserAndHighlightCodeStr(rawAns)
isShowRaw = false;
Toast.success("已为你显示非原文")
}
})
//中断回答
document.getElementById('stopAns').addEventListener('click', (ev) => {
try{
if(abortXml){
abortXml.abort();
abortXml = undefined;
}else {
Toast.error("无法中断!")
}
}catch(ex){
console.error("中断失败:",ex)
Toast.error("中断失败!")
}
})
//全屏
document.getElementById('fullScreen').addEventListener('click', (ev) => {
try{
if(!isFullScreen){
document.getElementById("gptDiv").classList.add("fullScreen")
isFullScreen = true;
}else {
document.getElementById("gptDiv").classList.remove("fullScreen")
isFullScreen = false;
}
}catch(ex){
console.error("ex:",ex)
Toast.error("未知异常!")
}
})
//隐藏
document.getElementById('hideGptDiv').addEventListener('click', (ev) => {
try{
$("body").append(``)
$(".floating-button a").click(function() {
$("#gptDiv").show();
$(".floating-button").remove()
});
$("#gptDiv").hide();
}catch(ex){
console.error("ex:",ex)
Toast.error("未知异常!")
}
})
//复制答案
document.getElementById('copyAns').addEventListener('click', (ev) => {
let ans = document.querySelector("#gptAnswer");
if(isShowRaw){
GM_setClipboard(rawAns, "text");
}else{
let cps = document.querySelectorAll(".btn-pre-copy");
for (let cp of cps){
cp.innerText = ''
}
GM_setClipboard(ans.innerText, "text");
for (let cp of cps){
cp.innerText = '复制代码'
}
}
Toast.success("复制成功!")
})
document.getElementById('modeSelect').addEventListener('change', () => {
const selectEl = document.getElementById('modeSelect');
const selectedValue = selectEl.options[selectEl.selectedIndex].value;
localStorage.setItem('GPTMODE', selectedValue);
Toast.success(`切换成功,当前线路:${selectedValue}`)
});
let chatSetting = false;
document.getElementById('chatSetting').addEventListener('click', () => {
if(!chatSetting){
//显示内容
try{
document.querySelector("#gptStatus").classList.remove("chatHide")
document.querySelector("#warn").classList.remove("chatHide")
document.querySelector("#autoClickP").classList.remove("chatHide")
document.querySelector("#darkThemeP").classList.remove("chatHide")
document.querySelector("#website").classList.remove("chatHide")
document.querySelector("#autoTipsP").classList.remove("chatHide")
}catch (e) {
console.log(e)
}
chatSetting = true;
}else{
//隐藏
try{
document.querySelector("#gptStatus").classList.add("chatHide")
document.querySelector("#warn").classList.add("chatHide")
document.querySelector("#autoClickP").classList.add("chatHide")
document.querySelector("#darkThemeP").classList.add("chatHide")
document.querySelector("#website").classList.add("chatHide")
document.querySelector("#autoTipsP").classList.add("chatHide")
}catch (e) {
console.log(e)
}
chatSetting = false;
}
})
}
async function appendBox(append_case) {
return new Promise((resolve, reject) => {
creatBox().then((divE) => {
let resetWidth = (width)=>{
try {
if(width){
document.querySelector("#gptDiv").style.setProperty("width",width);
return
}
document.querySelector("#gptDiv").style.setProperty("width",
"100%")
/*document.querySelector("#gptInput").setAttribute("class",
"se-input adjust-input")*/
} catch (e) {
console.error(e)
}
}
switch (append_case) {
case 0: //bing
if (divE) {
if(isMobile()){
//手机bing
document.getElementById('b_results').prepend(divE)
resetWidth();
}else{
document.getElementById('b_context').prepend(divE)
}
}
break;
case 1: //google
if(isMobile()){
//手机google
document.querySelector("div#msc").after(divE);
resetWidth();
}else if (document.getElementsByClassName('TQc1id ')[0]) {
document.getElementsByClassName('TQc1id ')[0].prepend(divE);
} else {
//other
document.getElementById("rcnt").appendChild(divE);
}
break;
case 2: //baidu
if (document.getElementById('content_right')) {
document.getElementById('content_right').prepend(divE)
}
break;
case 3: //yandex
if (document.getElementById('search-result-aside')) {
document.getElementById('search-result-aside').prepend(divE)
}
break;
case 4: //360
if(isMobile()){
//手机360
document.getElementById("search-box").appendChild(divE);
resetWidth();
}else{
if (document.getElementById('side')) {
document.getElementById('side').prepend(divE)
}
}
break;
case 5: //fsoufsou
if(isMobile()){
//手机fsou
let frow = document.querySelectorAll(".flex-row")[3]
if (frow.children!==undefined ) {
frow.children.item(0).prepend(divE)
}
resetWidth()
}else{
let frow = document.querySelectorAll(".flex-row")[2]
if (frow.children!==undefined && frow.children.length === 2) {
frow.children.item(1).prepend(divE)
} else {
frow.innerHTML = frow.innerHTML +
``
}
}
break;
case 6: //手机百度
if (document.getElementById('page-bd')) {
document.getElementById('page-bd').prepend(divE)
//调整css
resetWidth();
}
break;
case 7: //duckduckgo
if(isMobile()){
//手机dockgo
document.querySelector('form#search_form').after(divE)
resetWidth();
}else{
if (document.querySelector('[data-area="sidebar"]')) {
document.querySelector('[data-area="sidebar"]').prepend(divE)
}
}
break;
case 8: //sogou
if(isMobile()){
//手机搜狗
document.querySelector('form#searchform').after(divE)
resetWidth();
}else{
if (document.querySelector('div.right')) {
document.querySelector('div.right').prepend(divE)
}
}
break;
case 9: //bilibili
if (document.querySelector('div#danmukuBox')) {
document.querySelector('div#danmukuBox').children.item(0).prepend(divE)
resetWidth();
}
break;
case 10: //csdn
let asideDiv = document.querySelector("aside.blog_container_aside div")
if (asideDiv) {
asideDiv.after(divE)
let t = asideDiv.offsetTop + asideDiv.offsetHeight + 5;
const screenHeight = window.screen.height;
document.querySelector("#gptDiv").setAttribute("style",
`position: fixed;top: ${t}px;left: 0px;z-index: 9999;width:410px;`)
//滚动条
document.querySelector("#gptAnswer").setAttribute("style",
`height: ${screenHeight/5}px;overflow-y:scroll`)
}
break;
default:
if (divE) {
console.log(`啥情况${divE}`)
}
}
}).catch((err) => {
throw new Error(err)
}).finally(()=>{
if(autoClick){
setTimeout(() => {
document.getElementById("button_GPT").click(); //自动点击
}, 1500)
}
})
resolve("finished")
})
}
//焦点函数
function isBlur() {
let myInput = document.getElementById('gptInput');
if (myInput === document.activeElement) {
return 1
} else {
return 0
}
}
function keyEvent() {
document.onkeydown = function (e) {
let keyNum = window.event ? e.keyCode : e.which;
if (13 === keyNum) {
if (isBlur()) {
document.getElementById('button_GPT').click()
} else {
console.log("失焦不执行")
}
}
}
}
function addBothStyle() {
GM_addStyle(`
.gpt-container {
box-sizing: border-box;
height: -webkit-min-content;
height: min-content;
width: 455px;
margin-top: 8px;
margin-bottom: 8px;
border: 1px solid #dfe1e5;
border-radius: 8px;
overflow: hidden;
padding: 15px;
background-color:#fcfcfc
}
#dot{
height: 4px;
width: 4px;
display: inline-block;
border-radius: 2px;
animation: dotting 2.4s infinite step-start;
}
@keyframes dotting {
25%{
box-shadow: 4px 0 0 #71777D;
}
50%{
box-shadow: 4px 0 0 #71777D ,14px 0 0 #71777D;
}
75%{
box-shadow: 4px 0 0 #71777D ,14px 0 0 #71777D, 24px 0 0 #71777D;
}
}
pre{
overflow-x: scroll;
overflow-y: hidden;
background: #fffaec;
border-radius: 4px;
padding: 14px 3px;
}
pre::-webkit-scrollbar {
}`);
}
function Uint8ArrayToString(fileData) {
let dataString = "";
for (let i = 0; i < fileData.length; i++) {
dataString += String.fromCharCode(fileData[i]);
}
return dataString;
}
function decodeUnicode(str) {
str = str.replace(/\\/g, "%");
//转换中文
str = unescape(str);
//将其他受影响的转换回原来
str = str.replace(/%/g, "\\");
//对网址的链接进行处理
str = str.replace(/\\/g, "");
return str;
}
(function (extension) {
if (typeof showdown !== 'undefined') {
// global (browser or node.js global)
extension(showdown);
} else if (typeof define === 'function' && define.amd) {
// AMD
define(['showdown'], extension);
} else if (typeof exports === 'object') {
// Node, CommonJS-like
module.exports = extension(require('showdown'));
} else {
// showdown was not found so an error is thrown
throw Error('Could not find showdown library');
}
}(function (showdown) {
// loading extension into showdown
showdown.extension('myext', function () {
return [
//to katex
{
type: 'output',
filter: function (source, converter, options) {
//debugger
return katexTohtml(source);
}
},
// filter xss
{
type: 'output',
filter: function (source, converter, options) {
//debugger
return source.replace(/
let req1 = await GM_fetch({
method: "GET",
url: "https://xinghuo.xfyun.cn/chat",
headers: {
"origin":"https://xinghuo.xfyun.cn",
"referer":"https://xinghuo.xfyun.cn/"
}
})
let r = req1.responseText;
//console.log(r);
let mainjs;
try{
mainjs = /src="(\/static\/js\/main.*?.js)"/.exec(r)[1];//https://xinghuo.xfyun.cn/static/js/main.04f3ec36.js
console.log("mainjs:",mainjs)
}catch (e) {
console.error(r)
Toast.error("出错了,js获取失败")
}
if(mainjs){
console.log("https://xinghuo.xfyun.cn"+ mainjs.trim())
let req2 = await GM_fetch({
method: "GET",
url: "https://xinghuo.xfyun.cn"+ mainjs.trim(),
headers: {
"origin":"https://xinghuo.xfyun.cn",
"referer":"https://xinghuo.xfyun.cn/"
}
})
let rr = req2.responseText;
console.log(rr.substring(0,100))
try{
const re = /appId:"(.*?)"/gi;
let match;
while ((match = re.exec(rr)) !== null) {
console.log(match[1]);
sp_appId = match[1];
}
/*let index = rr.indexOf("appId");
if (index !== -1) {
let sp_appId = rr.substring(index, index + 10); // 指定文本
}*/
console.log("sp_appId:",sp_appId)
}catch (e) {
console.error(e)
Toast.error("出错了,sp_appId获取失败",)
}
}
}
/*setTimeout(()=>{
if(getGPTMode()==="SPARK"){
init_sp_appId()
}
})*/
async function init_sp_chatId() {
//https://xinghuo.xfyun.cn/iflygpt/u/chat-list/v1/create-chat-list
let req1 = await GM_fetch({
method: "POST",
url: "https://xinghuo.xfyun.cn/iflygpt/u/chat-list/v1/create-chat-list",
headers: {
"accept": "application/json, text/plain, */*",
"x-requested-with": "XMLHttpRequest",
"origin":"https://xinghuo.xfyun.cn",
"Content-Type":"application/json",
"referer":"https://xinghuo.xfyun.cn/desk"
},
data:"{}"
})
let r = req1.responseText;
try{
sp_chatId = JSON.parse(r).data.id;
console.log("sp_chatId:",sp_chatId)
}catch (e) {
console.error(r)
Toast.error("sp_chatId获取失败")
}
}
setTimeout(()=>{
if(getGPTMode()==="SPARK"){
init_sp_chatId()
}
},500)
async function get_sp_GtToken() {
return new Promise(async (resolve, reject) => {
//https://riskct.geetest.com/g2/api/v1/pre_load?client_type=h5&callback=geetest_时间戳
let timestamp = Date.now();
let req1 = await GM_fetch({
method: "GET",
url: `https://riskct.geetest.com/g2/api/v1/pre_load?client_type=h5&callback=geetest_${timestamp}`,
headers: {
"accept": "*/*",
"referer": "https://xinghuo.xfyun.cn/"
}
})
let r = req1.responseText;
console.log(r);
try {
let rr = r.replace(`geetest_${timestamp}(`,
"");
rr = rr.substring(0, rr.length - 1)
console.log("rr", rr)
let rj = JSON.parse(rr);
console.log("rj:");
console.log(rj);
//====
let config = {
appId: sp_appId,
js: rj.data.js,
staticPath: rj.data.staticPath,
gToken: rj.data.gToken
}
console.log("config")
console.log(config)
setTimeout(() => {
initGeeGuard(config, (gd) => {
console.log(gd)
if (gd.data.gee_token) {
sp_GtToken = gd.data.gee_token;
resolve(sp_GtToken)
}else{
reject("出错")
}
})
}, 500)
} catch (e) {
console.error(e)
setTimeout(init_sp_chatId)
reject("出错")
}
})
}
//解码
function decodeSpark(src) {
/*let rv = function(e) {
return e.replace(/[^A-Za-z0-9\+\/]/g, "")
}*/
let dv = function(e) {
//return Buffer.from(e, "base64").toString("utf8")
// 将 base64 编码的字符串转换为字节数组
const bytes = CryptoJS.enc.Base64.parse(e);
// 将字节数组转换为 UTF-8 字符串
return bytes.toString(CryptoJS.enc.Utf8);
}//等价BASE64解码 6KaB
/*let fv = function(e) {
return dv(function(e) {
return rv(e.replace(/[-_]/g, (function(e) {
return "-" == e ? "+" : "/"
}
)))
}(e))
};*/
return dv(src);
}
let spark_first = true;
async function SPARK(){
showAnserAndHighlightCodeStr("请稍后,第一次切换到该线路需要刷新页面,该线路为官网线路,使用前确保已经登录[讯飞星火](https://xinghuo.xfyun.cn/)")
if(!sp_chatId){
showAnserAndHighlightCodeStr("chatId为空,请重试。。。使用前确保已经登录[讯飞星火](https://xinghuo.xfyun.cn/)")
init_sp_chatId()
return
}
await get_sp_GtToken()
console.log("sp_GtToken",sp_GtToken)
//重命名
if(spark_first){
let req1 = await GM_fetch({
method: "POST",
url: "https://xinghuo.xfyun.cn/iflygpt/u/chat-list/v1/rename-chat-list",
headers: {
"accept": "application/json, text/plain, */*",
"x-requested-with": "XMLHttpRequest",
"origin":"https://xinghuo.xfyun.cn",
"Content-Type":"application/json",
"referer":"https://xinghuo.xfyun.cn/desk"
},
data:JSON.stringify({
"chatListId": sp_chatId,
"chatListName": your_qus.substring(0,10)
})
})
let r = req1.responseText;
console.log("rename chat:",r)
spark_first = false;
}
//提问
let sendData = `------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"fd\"\r\n\r\n${sp_fd}\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"clientType\"\r\n\r\n2\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"chatId\"\r\n\r\n${sp_chatId}\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\n${your_qus}\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"GtToken\"\r\n\r\n${sp_GtToken}\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk--\r\n`;
GM_fetch({
method: 'POST',
url: 'https://xinghuo.xfyun.cn/iflygpt-chat/u/chat_message/chat',
headers: {
"Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryAS7tSr3osJng5Nxk",
"challenge": "undefined",
"seccode": "",
"validate": "undefined",
"accept": "text/event-stream",
"x-requested-with": "XMLHttpRequest",
"origin":"https://xinghuo.xfyun.cn",
"referer":"https://xinghuo.xfyun.cn/desk"
},
responseType: "stream",
data: sendData
}).then((stream)=> {
let reader = stream.response.getReader()
let ans = []
//let de = []
reader.read().then(function processText({done, value}) {
if (done) {
console.log("===done==")
//console.log(de)
return
}
let responseItem = new TextDecoder("utf-8").decode(value)
console.log(responseItem)
responseItem.split("\n").forEach(item=>{
try {
let ii = item.replace(/data:/gi,"").trim();
if(ii && ii !==""){
let chunk = decodeSpark(ii)
//de.push(item.replace(/data:/gi,"").trim())
ans.push(chunk)
showAnserAndHighlightCodeStr(ans.join(""))
}
}catch (ex){
console.error(item)
}
})
return reader.read().then(processText)
},function (reason) {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!")
})
})
}
//星火相关====end=====
//天工 ----start--------
let tg_k_device_hash;
async function initDeviceHash() {
if (location.href.includes("tiangong.cn")) {
tg_k_device_hash = getCookieValue(document.cookie,"k_device_hash");
console.log("tg_k_device_hash",tg_k_device_hash)
GM_setValue("tg_k_device_hash", tg_k_device_hash)
try {
if(tg_k_device_hash){
document.querySelector('textarea').placeholder = `device_hash获取成功:${tg_k_device_hash}`
}else{
document.querySelector('textarea').placeholder = `device_hash获取失败,请再次刷新.`
}
}catch (e) {}
setTimeout(initDeviceHash,2000)
} else {
tg_k_device_hash = GM_getValue("tg_k_device_hash")
}
}
setTimeout(initDeviceHash)
let tg_conversation_id
async function TIANGONG(){
showAnserAndHighlightCodeStr("请稍后...使用该线路,请确保已经登天工官网获取token后刷新页面。[天工AI](https://www.tiangong.cn/)")
console.log("tg_k_device_hash:",tg_k_device_hash)
if(!tg_k_device_hash){
showAnserAndHighlightCodeStr("device_hash错误了。请确保已经登天工官网获取device_hash后刷新页面。[天工AI](https://www.tiangong.cn/)")
return
}
//请求
let req1 = await GM_fetch({
method: "POST",
url: "https://work.tiangong.cn/dialogue-aggregation/dialogue/aggregation/v1/chat/sensitive/words",
headers: {
"accept": "application/json, text/plain, */*",
"origin":"https://www.tiangong.cn",
"referer":"https://www.tiangong.cn/",
"channel": "",
"content-type": "application/json",
"device": "Web",
"device_hash": tg_k_device_hash,
"device_id": tg_k_device_hash,
},
data:JSON.stringify({
data:{
content: your_qus,
source: "web"
}
})
})
let req1Text = req1.responseText;
console.log(req1Text)
//获取对话id
let req2 = await GM_fetch({
method: "GET",
url: "https://work.tiangong.cn/agents_api/user/dialogue_list?offset=0",
headers: {
"accept": "application/json, text/plain, */*",
"origin":"https://www.tiangong.cn",
"referer":"https://www.tiangong.cn/",
"channel": "",
"content-type": "application/json",
"device": "Web",
"device_hash": tg_k_device_hash,
"device_id": tg_k_device_hash,
},
})
let req2Text = req2.responseText;
console.log(req2Text)
tg_conversation_id = JSON.parse(req2Text).data.datalist[0].session_id
console.log("tg_conversation_id",tg_conversation_id)
//获取信息信息
//连接天工 websocket
let wssurl = `wss://work.tiangong.cn/dialogue-aggregation/dialogue/aggregation/v2/agent?device=Web&device_id=${tg_k_device_hash}&device_hash=${tg_k_device_hash}`
let socket = new WebSocket(wssurl);
socket.addEventListener('open', (event) => {
console.log('天工 wss 连接成功');
socket.send(JSON.stringify({
"agent_id": "016",
"agent_type": "universal",
"conversation_id": tg_conversation_id,
"prompt": {
"ask_from": "user",
"ask_id": null,
"content": your_qus,
"prompt_content": null,
"template_id": null,
"action": null,
"file": null,
"template": null,
"copilot": false,
"bubble_text": null,
"publish_agent": null,
"copilot_option": null
}
}))
});
let tg_result = []
socket.addEventListener('message', (event) => {
console.log('天工 接收到消息:', event.data);
let revData = event.data;
try{
let revJSON = JSON.parse(revData);
if(revJSON.type == 1){
try {
tg_result.push(revJSON.arguments[0].messages[0].text)
showAnserAndHighlightCodeStr(tg_result.join(""))
}catch (e) { }
}
}catch (ex) { }
});
}
//天工 ----end--------
//问心一言 ----start---
let yy_aisearch_id;
let yy_pvId;
let yy_sessionId;
async function initYiYAN(){
let req1 = await GM_fetch({
method: "GET",
url: `https://chat.baidu.com/?pcasync=pc&asyncRenderUrl=&passportStaticPage=https%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fv3Jump.html&from=pc_tab&word=${encodeURI(your_qus)}&source=pd_ic`,
headers: {
"accept": "*/*",
"origin":"https://www.baidu.com",
"referer":`https://www.baidu.com/`
},
data:JSON.stringify({
data:{}
})
})
let r = req1.responseText;
yy_aisearch_id = /"aisearch_id":"(.*?)"/i.exec(r)[1];
yy_pvId = /"pvId":"(.*?)"/i.exec(r)[1];
yy_sessionId = /"sessionId":"(.*?)"/i.exec(r)[1];
console.log("yy_aisearch_id:",yy_aisearch_id)
console.log("yy_pvId:",yy_pvId)
console.log("yy_sessionId:",yy_sessionId)
}
setTimeout(()=>{
if(getGPTMode() === 'YIYAN'){
initYiYAN()
}
})
async function YIYAN() {
showAnserAndHighlightCodeStr("请稍后...该线路为官网线路,使用该线路,请确保已经登百度账号,再刷新页面。[百度](https://www.baidu.com/)")
GM_fetch({
method: 'POST',
url: 'https://chat-ws.baidu.com/aichat/api/conversation',
headers: {
"origin":"https://www.baidu.com",
"referer":`https://www.baidu.com/`,
"Content-Type": "application/json",
"accept": "text/event-stream"
},
responseType: "stream",
data: JSON.stringify({
"message": {
"inputMethod": "keyboard",
"isRebuild": false,
"content": {
"query": your_qus,
"qtype": 0
}
},
"sessionId": yy_sessionId,
"aisearchId": yy_aisearch_id,
"pvId": yy_pvId
})
}).then((stream)=> {
let reader = stream.response.getReader()
let ans = []
let preResponseItem = '';//前一记录
let combineItem = [];//合并
let referenceList;//引用
reader.read().then(function processText({done, value}) {
if (done) {
console.log("===done==")
//console.log(de)
let result = ans.join("");
let arr = result.match(/\^(.*?)\^/g);
let oldArr = arr.slice()
if(referenceList && referenceList.length > 0){
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < referenceList.length; j++) {
if(arr[i].includes(`[${j+1}]`)){
let url = referenceList[j].url;
arr[i] = arr[i].replace(`[${j+1}]`,`[${j+1}](${url})`)
}
}
}
}
console.log("arr:",arr)
console.log("oldArr:",oldArr)
for (let i = 0; i < oldArr.length; i++) {
result = result.replace(oldArr[i],arr[i].replace(/\^/g,""))
}
showAnserAndHighlightCodeStr(result)
return
}
let responseItem = new TextDecoder("utf-8").decode(value)
console.log(responseItem)
if(!responseItem.includes("event:ping") && !responseItem.startsWith("event:messag")){
combineItem.push(preResponseItem)
combineItem.push(responseItem)
preResponseItem = '';//恢复初始
responseItem = combineItem.join("")//合并
console.log("combineItem:",responseItem)
combineItem = [];//清空
}else if(!responseItem.includes("event:ping")){
preResponseItem = responseItem;
}
responseItem.split("\n").forEach(item=>{
try {
let ii = item.replace(/data:/gi,"").trim();
if(ii && ii !==""){
let chunk = JSON.parse(ii).data.message.content.generator.text
//de.push(item.replace(/data:/gi,"").trim())
ans.push(chunk)
showAnserAndHighlightCodeStr(ans.join(""))
if(JSON.parse(ii).data.message.content.generator.referenceList){
referenceList = JSON.parse(ii).data.message.content.generator.referenceList
}
}
}catch (ex){
console.error(item)
}
})
return reader.read().then(processText)
},function (reason) {
Toast.error("未知错误!")
console.log(reason)
}).catch((ex)=>{
Toast.error("未知错误!")
console.log(ex)
})
})
}
//问心一言 ----end---
//腾讯混元 ----start-----
let hunyuan_tUserId = '';
let hunyuan_count = 0;
async function initHunyuanID() {
if (location.href.includes("hunyuan.tencent.com") || location.href.includes("yuanbao.tencent.com")) {
hunyuan_tUserId = getCookieValue(document.cookie,"hy_user");
GM_setValue("hunyuan_tUserId", hunyuan_tUserId)
if(hunyuan_tUserId){
Toast.info(`hunyuan_tUserId获取成功:${hunyuan_tUserId}`)
}else{
setTimeout(initHunyuanID, 5000)
if(hunyuan_count < 3){
Toast.info(`hunyuan_tUserId获取失败,请再次刷新!`)
}
hunyuan_count++;
}
} else {
hunyuan_tUserId = GM_getValue("hunyuan_tUserId")
}
}
//setTimeout(initHunyuanID)
let hunyuan_isfirst = true;
let hunyuan_chatId ;
async function initHunyuan(){
let req1 = await GM_fetch({
method: "POST",
url: `https://hunyuan.tencent.com/api/generate/id`,
headers: {
"accept": "application/json, text/plain, */*",
"origin":"https://hunyuan.tencent.com",
"referer":`https://hunyuan.tencent.com/bot/chat`,
"t-userid": hunyuan_tUserId,
"x-requested-with": "XMLHttpRequest",
"x-source": "web"
},
data:null
})
let r = req1.responseText;
hunyuan_chatId = r;
if(hunyuan_chatId) hunyuan_isfirst = false;
console.error("hunyuan_chatId:",r)
}
/* fetch('https://yuanbao.tencent.com/api/chat/ca7b253f-a1a7-4e24-82ca-667cc0fbd98d', {
method: 'POST',
headers: {
'authority': 'yuanbao.tencent.com',
'accept': '*!/!*',
'accept-language': 'zh-CN,zh;q=0.9',
'cache-control': 'no-cache',
'chat_version': 'v1',
'content-type': 'text/plain;charset=UTF-8',
'cookie': '_ga=GA1.2.1033776250.1698727525; _gcl_au=1.1.484286265.1713846526; hy_source=web; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2229491242%22%2C%22first_id%22%3A%2218b840cf7219d8-044a60801af8344-1f7e152e-1440000-18b840cf7229ea%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E5%BC%95%E8%8D%90%E6%B5%81%E9%87%8F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMThiODQwY2Y3MjE5ZDgtMDQ0YTYwODAxYWY4MzQ0LTFmN2UxNTJlLTE0NDAwMDAtMThiODQwY2Y3MjI5ZWEiLCIkaWRlbnRpdHlfbG9naW5faWQiOiIyOTQ5MTI0MiJ9%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2229491242%22%7D%2C%22%24device_id%22%3A%2218b840cf7219d8-044a60801af8344-1f7e152e-1440000-18b840cf7229ea%22%7D; hy_user=Bcw9KJaWemFaQ9iL; hy_token=bP9sp/yaXedZmIELMZz0hGSfpb6zW8UN7hFQeec8RFQIVAhWHCHLbFxq0tF5U6pO',
'origin': 'https://yuanbao.tencent.com',
'pragma': 'no-cache',
'referer': 'https://yuanbao.tencent.com/chat/naQivTmsDa',
'sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36',
'x-requested-with': 'XMLHttpRequest',
'x-source': 'web'
},
body: '{"model":"gpt_175B_0404","prompt":"你叫我什么","plugin":"Adaptive","displayPrompt":"你很牛吗","displayPromptType":1,"options":{},"multimedia":[],"agentId":"naQivTmsDa","version":"v2"}'
});
*/
async function Hunyuan() {
showAnserAndHighlightCodeStr("该线路为官网线路,请确保登录[元宝](https://yuanbao.tencent.com/chat)")
if(!hunyuan_tUserId){
let req1 = await GM_fetch({
method: "GET",
url: `https://yuanbao.tencent.com/api/getuserinfo`,
headers: {
"accept": "application/json, text/plain, */*",
"origin":"https://yuanbao.tencent.com",
"referer":`https://yuanbao.tencent.com`
}
})
let r = req1.responseText;
hunyuan_tUserId = JSON.parse(r).userId
console.warn("hunyuan_tUserId:",hunyuan_tUserId)
if(!hunyuan_tUserId){
showAnserAndHighlightCodeStr("UserId获取失败,请登录[元宝](https://yuanbao.tencent.com/chat)")
return
}
}
if(hunyuan_isfirst && !hunyuan_chatId){
await initHunyuan()
}
GM_fetch({
method: 'POST',
url: `https://hunyuan.tencent.com/api/chat/${hunyuan_chatId}`,
headers: {
"origin":"https://hunyuan.tencent.com",
"referer":`https://hunyuan.tencent.com/bot/chat`,
"chat_version": "v1",
"content-type": "text/plain;charset=UTF-8",
"accept": "*/*",
"t-userid": hunyuan_tUserId,
"x-requested-with": "XMLHttpRequest",
"x-source": "web"
},
responseType: "stream",
data: JSON.stringify({
"model": "gpt_175B_0404",
"prompt": your_qus,
"displayPrompt": your_qus,
"displayPromptType": 1,
"plugin": "Adaptive",
"isSkipHistory": false
})
}).then((stream)=> {
let reader = stream.response.getReader()
let ans = []
reader.read().then(function processText({done, value}) {
if (done) {
console.log("===done==")
//console.log(de)
let result = ans.join("");
showAnserAndHighlightCodeStr(result)
return
}
let responseItem = new TextDecoder("utf-8").decode(value)
console.log(responseItem)
responseItem.split("\n").forEach(item=>{
try {
let ii = item.replace(/data:/gi,"").trim();
if(ii && ii !==""){
let chunk = JSON.parse(ii).msg
//de.push(item.replace(/data:/gi,"").trim())
ans.push(chunk)
showAnserAndHighlightCodeStr(ans.join(""))
}
}catch (ex){
console.error(item)
}
})
return reader.read().then(processText)
},function (reason) {
Toast.error("未知错误!")
console.log(reason)
}).catch((ex)=>{
Toast.error("未知错误!")
console.log(ex)
})
})
}
//腾讯混元 ----end-----
//ChatGLM相关 ----start-----
//https://chatglm.cn
let chatgml_token;
async function init_chatgml_token() {
if (location.href.includes("chatglm.cn")) {
chatgml_token = getCookieValue(document.cookie, "chatglm_token")
GM_setValue("chatgml_token", chatgml_token)
if (chatgml_token) {
console.log(`chatgml_token获取成功:${chatgml_token}`)
} else {
console.log('invite_Token获取失败,请再次刷新')
}
} else if(getGPTMode() === 'ChatGLM' || getGPTMode() === 'ChatGLM4') {
chatgml_token = await GM_getValue("chatgml_token")
console.log("chatgml_token:", chatgml_token)
}
}
setTimeout(()=>{
init_chatgml_token()
setInterval(init_chatgml_token,5000)
})
let chatgml_first = true;
let chatgml_task_id;
let chatgml_context_id;
async function ChatGLM() {
console.log("chatgml_token:",chatgml_token)
showAnserAndHighlightCodeStr("请稍后...该线路为官网线路,使用该线路,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)")
if(!chatgml_token){
setTimeout(init_chatgml_token)
showAnserAndHighlightCodeStr("init_chatgml_token为空,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)")
return
}
if (chatgml_first || !chatgml_task_id) {
let req1 = await GM_fetch({
method: "POST",
url: `https://chatglm.cn/chatglm/backend-api/v1/conversation`,
headers: {
"accept": "application/json, text/plain, */*",
"authorization": `Bearer ${chatgml_token}`,
"origin": "https://chatglm.cn",
"content-type": "application/json;charset=UTF-8",
"referer": `https://chatglm.cn/detail`
},
data: JSON.stringify({
"prompt": your_qus
})
})
let r = req1.responseText;
let jsonObj = JSON.parse(r);
try {
chatgml_task_id = jsonObj.result.task_id;
console.log("chatgml_task_id:",chatgml_task_id)
chatgml_first = false;
}catch (e) {
showAnserAndHighlightCodeStr("task_id出错了,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)")
return
}
}
let req1 = await GM_fetch({
method: "POST",
url: `https://chatglm.cn/chatglm/backend-api/v1/stream_context`,
headers: {
"accept": "application/json, text/plain, */*",
"authorization": `Bearer ${chatgml_token}`,
"origin": "https://chatglm.cn",
"content-type": "application/json;charset=UTF-8",
"referer": `https://chatglm.cn/detail`
},
data: JSON.stringify({
"prompt": your_qus,
"seed": 69809,
"max_tokens": 512,
"conversation_task_id": chatgml_task_id,
"retry": false,
"retry_history_task_id": null
})
})
let r = req1.responseText;
let jsonObj = JSON.parse(r);
try {
chatgml_context_id = jsonObj.result.context_id;
console.log("chatgml_context_id:",chatgml_task_id)
}catch (e) {
showAnserAndHighlightCodeStr("context_id出错了,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)")
return
}
GM_fetch({
method: "GET",
url: `https://chatglm.cn/chatglm/backend-api/v1/stream?context_id=${chatgml_context_id}`,
headers: {
"accept": "text/event-stream",
"origin": "https://chatglm.cn",
"referer": `https://chatglm.cn/detail`
},
responseType:"stream"
}).then((stream)=> {
let reader = stream.response.getReader()
reader.read().then(function processText({done, value}) {
if (done) {
return
}
let responseItem = new TextDecoder("utf-8").decode(value)
// console.error(responseItem)
responseItem = responseItem.split("\n\n");
console.warn(responseItem)
responseItem.forEach(item=>{
try {
if(item && item.startsWith("event:add") || item.startsWith("event:finish")){
let ii = item.replace(/data:/gi,"")
.replace(/event:add/gi,"")
.replace(/event:finish/gi,"")
.trim();
if(ii){
showAnserAndHighlightCodeStr(ii)
}
}
}catch (ex){
console.error(item)
}
})
return reader.read().then(processText)
},function (reason) {
Toast.error("未知错误!")
console.log(reason)
}).catch((ex)=>{
Toast.error("未知错误!")
console.log(ex)
})
})
}
let glm_conversation_id
async function ChatGLM4(){
console.log("chatgml_token:",chatgml_token)
showAnserAndHighlightCodeStr("请稍后...该线路为官网线路,使用该线路,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)")
if(!chatgml_token){
setTimeout(init_chatgml_token)
showAnserAndHighlightCodeStr("init_chatgml_token为空,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)")
return
}
GM_fetch({
method: "POST",
url: `https://chatglm.cn/chatglm/backend-api/assistant/stream`,
headers: {
"authorization": `Bearer ${chatgml_token}`,
"accept": "text/event-stream",
"content-type": "application/json",
"origin": "https://chatglm.cn",
"referer": `https://chatglm.cn/main/alltoolsdetail`
},
data:JSON.stringify({
"assistant_id": "65940acff94777010aa6b796",
"conversation_id": glm_conversation_id ? glm_conversation_id : "",
"meta_data": {
"mention_conversation_id": "",
"is_test": false,
"input_question_type": "xxxx",
"channel": "",
"draft_id": ""
},
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": your_qus
}
]
}
]
}),
responseType:"stream"
}).then((stream)=> {
let reader = stream.response.getReader()
let res = []
reader.read().then(function processText({done, value}) {
if (done) {
return
}
let responseItem = new TextDecoder("utf-8").decode(value)
//console.error(responseItem)
responseItem = responseItem.split("\n\n");
console.warn(responseItem)
if(responseItem.length >= 2 && responseItem[responseItem.length - 2].includes("finish")){
responseItem.forEach(item=>{
try {
let resJson = JSON.parse(item.replace(/event:message\ndata:/gi,""))
let part = resJson.parts[0].content[0].text
if(resJson.parts[0].status == 'finish'){
res.push(part)
showAnserAndHighlightCodeStr(res.join(""))
}else if (resJson.parts[0].status == 'init'){
showAnserAndHighlightCodeStr(part)
}
if(resJson.conversation_id){
glm_conversation_id = resJson.conversation_id
}
}catch (ex){
console.error(item)
}
})
}
return reader.read().then(processText)
},function (reason) {
Toast.error("未知错误!")
console.log(reason)
}).catch((ex)=>{
Toast.error("未知错误!")
console.log(ex)
})
})
}
//ChatGLM相关 ----start-----
//智谱AI
let zhipuToken = '4056fc44f1474c1e85e976577f930e40.O6WKndzKWBjQJWcA';
let zhipuPrompt = []
let zhipu_apiKey = localStorage.getItem("ZhipuapiKey")
function base64UrlEncode(str) {
let encodedSource = CryptoJS.enc.Base64.stringify(str);
const reg = new RegExp('/', 'g');
encodedSource = encodedSource.replace(/=+$/,'').replace(/\+/g,'-').replace(reg,'_');
return encodedSource;
}
function generate_token(apikey, exp_seconds) {
const [id, secretKey] = apikey.split(".");
const payload = {
"api_key": id,
"exp": Date.now() + exp_seconds * 1000,
"timestamp": Date.now(),
// "exp": 1687878553567,
// "timestamp": 1687877553567
};
const encodedHeader = base64UrlEncode(CryptoJS.enc.Utf8.parse(JSON.stringify({ alg: 'HS256', sign_type: 'SIGN', typ: "JWT"})));
const encodedPayload = base64UrlEncode(CryptoJS.enc.Utf8.parse(JSON.stringify(payload)));
const signature = CryptoJS.HmacSHA256(encodedHeader + '.' + encodedPayload, secretKey);
console.log(signature)
//const encodedSignature = window.btoa(signature);
const jwt = encodedHeader + '.' + encodedPayload + '.' + base64UrlEncode(signature);
console.log(jwt);
return jwt;
}
function ZhipuAI(){
showAnserAndHighlightCodeStr("请稍后。未申请key的,请前往[智谱AI](https://open.bigmodel.cn/usercenter/apikeys)申请,然后点击设置里的更新key")
if(!localStorage.getItem("ZhipuapiKey")){
showAnserAndHighlightCodeStr("apikey不存在。请前往[智谱AI](https://open.bigmodel.cn/usercenter/apikeys)申请,然后点击设置里的更新key")
return
}
zhipu_apiKey = zhipu_apiKey || localStorage.getItem("ZhipuapiKey");
addMessageChain(zhipuPrompt, {"role": "user", "content": your_qus} , 10)
GM_fetch({
method: "POST",
url: `https://open.bigmodel.cn/api/paas/v3/model-api/chatglm_std/sse-invoke`,
headers: {
"accept": "text/event-stream",
"Content-Type":"application/json",
"Authorization": generate_token(zhipu_apiKey, 1000)
// "Authorization": 'eyJhbGciOiJIUzI1NiIsInNpZ25fdHlwZSI6IlNJR04iLCJ0eXAiOiJKV1QifQ.eyJhcGlfa2V5IjoiZjM3ZDVlMjFhZDk1NGJhOTM0NmYyOTgwMTgzNDJiMjciLCJleHAiOjE2ODc4Nzg1NTM1NjcsInRpbWVzdGFtcCI6MTY4Nzg3NzU1MzU2N30.e8SMjA0vBaUxXB-WrViFa0-C0qVLechNV5L5s2WoF8c'
},
data:JSON.stringify({
model:"chatglm_std",
prompt : zhipuPrompt,
temperature: 0.95,
top_p: 0.7,
incremental: true
}),
responseType:"stream"
}).then((stream)=> {
let reader = stream.response.getReader()
let ans = [];
reader.read().then(function processText({done, value}) {
if (done) {
if(ans.length > 0){
addMessageChain(zhipuPrompt, {"role": "assistant", "content": ans.join("")} , 10)
}
return
}
let responseItem = new TextDecoder("utf-8").decode(value)
console.error(responseItem)
responseItem = responseItem.split("\n");
console.warn(responseItem)
responseItem.forEach(item=>{
try {
if(item && item.startsWith("data:")){
let ii = item.replace(/data:/gi,"")
if(ii){
ans.push(ii)
showAnserAndHighlightCodeStr(ans.join(""))
}
}
}catch (ex){
console.error(item)
}
})
return reader.read().then(processText)
},function (reason) {
Toast.error("未知错误!")
console.log(reason)
}).catch((ex)=>{
Toast.error("未知错误!")
console.log(ex)
})
})
}
//360智脑 -------start------
let conversation_id;
async function Zhinao360(){
showAnserAndHighlightCodeStr("请稍后...该线路为官网线路,使用该线路,请确保已经登录[360智脑](https://chat.360.cn/)")
const sendData = JSON.stringify({
"prompt": your_qus,
"conversation_id": conversation_id || "",
"source_type": "prophet_web",
"role": "00000001",
"is_regenerate": false,
"is_so": false
});
console.log(conversation_id)
GM_fetch({
method: "POST",
url: `https://chat.360.cn/backend-api/api/common/chat`,
headers: {
"accept": "text/event-stream",
"origin": "https://chat.360.cn",
"referer": `https://chat.360.cn/index`,
"content-type": "application/json",
},
data: sendData,
responseType:"stream"
}).then((stream)=> {
let reader = stream.response.getReader()
let result = []
reader.read().then(function processText({done, value}) {
if (done) {
return
}
let responseItem = new TextDecoder("utf-8").decode(value)
// console.error(responseItem)
console.warn(responseItem)
if(responseItem){
responseItem.split("\n").forEach(item=>{
try{
if(item.startsWith("data: CONVERSATIONID####")){
conversation_id = item.replace(/data: CONVERSATIONID####/gi,"")
}else if(item.startsWith("data: MESSAGEID####")){
}else if(item.startsWith("data")){
let i = item.replace(/data: /gi,"")
if(i){
result.push(i)
}else{
result.push("\n")
}
}
}catch (e) {}
})
showAnserAndHighlightCodeStr(result.join(""))
}
return reader.read().then(processText)
},function (reason) {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
Toast.error("未知错误!")
console.log(ex)
})
})
}
//360智脑 -------end------
//百川AI---start
function getEagleEyeSessionID() {
for (var e, t, r = 20, n = new Array(r), a = Date.now().toString(36).split(""); r-- > 0; )
t = (e = 36 * Math.random() | 0).toString(36),
n[r] = e % 3 ? t : t.toUpperCase();
for (var i = 0; i < 8; i++)
n.splice(3 * i + 2, 0, a[i]);
return n.join("")
}
let EagleEyeSessionID = getEagleEyeSessionID();
function getRandIP() {
for (var e = [], t = 0; t < 4; t++) {
var r = Math.floor(256 * Math.random());
e[t] = (r > 15 ? "" : "0") + r.toString(16)
}
return e.join("").replace(/^0/, "1")
}
function getEagleEyeTraceID() {
let e = getRandIP()
, t = Date.now()
, r = 1000
, a = e + t + r + "cced8";
return a
}
let EagleEyeTraceID = getEagleEyeTraceID()
let bc_session_id = generateRandomString(11)
let bc_messageId = generateRandomString(13)
let bc_userID;
async function getBCUserID() {
let rr = await GM_fetch({
method: "GET",
url: `https://www.baichuan-ai.com/api/auth/session`
});
if (rr.status === 200) {
console.log(rr)
let result = JSON.parse(rr.responseText);
bc_userID = result.user.id;
} else {
console.error(rr)
}
}
setTimeout(()=>{
if(getGPTMode()==="BAICHUAN"){
getBCUserID()
}
})
let bc_parent_id = 0
let bc_session_info_id
async function BAICHUAN() {
console.log("bc_parent_id",bc_parent_id)
showAnserAndHighlightCodeStr("请耐心等待,该线路为非流式传输较慢,第一次切换到该线路需要刷新页面,该线路为官网线路,使用前确保已经登录[百川](https://www.baichuan-ai.com/chat)")
if(!bc_userID){
showAnserAndHighlightCodeStr("userid为空,请重试。。。使用前确保已经登录[百川](https://www.baichuan-ai.com/chat)")
getBCUserID()
return
}
let now = Date.now()
GM_fetch({
method: "POST",
url: `https://www.baichuan-ai.com/api/chat/v1/chat`,
headers: {
'Accept': '*/*',
'Content-Type': 'application/json',
'EagleEye-SessionID': EagleEyeSessionID,
'EagleEye-TraceID': EagleEyeTraceID,
'EagleEye-pAppName': 'bc7akk1cwt@b6e253f842cced8',
'Origin': 'https://www.baichuan-ai.com',
'Referer': 'https://www.baichuan-ai.com/chat',
'x-requested-with': 'XMLHttpRequest'
},
data: JSON.stringify({
'type': 'input',
'request_id': uuidv4(),
'stream': true,
'prompt': {
'id': null,
'messageId': `Ub${generateRandomString(13)}`,
'session_id': bc_session_id,
'data': your_qus,
'from': 0,
'parent_id': bc_parent_id,
'created_at': now,
'attachments': []
},
'app_info': {
'id': 10001,
'name': 'baichuan_web'
},
'user_info': {
'id': bc_userID,
'status': 1
},
'session_info': {
'id': bc_session_info_id ? bc_session_info_id: null,
'session_id': bc_session_id,
'name': '\u65B0\u7684\u5BF9\u8BDD',
'created_at': now
},
'assistant_info': {},
'parameters': {
'repetition_penalty': -1,
'temperature': -1,
'top_k': -1,
'top_p': -1,
'max_new_tokens': -1,
'do_sample': -1,
'regenerate': 0,
'wse': true
},
'history': [],
'assistant': {},
'retry': 3
}),
// responseType:"stream"
}).then((stream)=>{
let responseText = stream.responseText
let result = []
//console.warn(responseText)
let arr = responseText.split("\n")
for (let i = 0; i < arr.length; i++) {
try {
result.push(JSON.parse(arr[i]).answer.data)
showAnserAndHighlightCodeStr(result.join(""))
}catch (e) { }
}
showAnserAndHighlightCodeStr(result.join(""))
// let result = []
// const reader = stream.response.getReader();
// reader.read().then(function processText({done, value}) {
// if (done) {
// return;
// }
// try {
// let d = new TextDecoder("utf8").decode(new Uint8Array(value));
// console.warn(d)
//
// try {
// result.push(JSON.parse(d).answer.data)
// showAnserAndHighlightCodeStr(result.join(""))
// }catch (e) {
// console.error(d)
// }
//
// try {
// let v = JSON.parse(d).rds
// bc_parent_id = v[v.length - 1].id
// bc_session_info_id = v[0].id
// }catch (e) {
// //console.error(d)
// }
//
//
//
// } catch (e) {
// console.log(e)
// }
//
// return reader.read().then(processText);
// });
},reason => {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!")
})
}
//百川AI---end
let messageChain_chatforai = []
let chatforai_coverid = uuidv4()
const generateSignatureChatforai = async(t,e)=>{
const {t: a, m: r, id: o} = t
, s = `${o}:${a}:${r}:${e}`;
return await digestMessage(s)
}
function chatforai() {
let now = Date.now();
generateSignatureChatforai({
t: now,
m: your_qus,
id: chatforai_coverid
}, "D6D4X4g9").then(sign => {
addMessageChain(messageChain_chatforai, {role: "user", content: your_qus})//连续话
console.log(sign)
GM_fetch({
method: "POST",
url: "https://chatforai.store/api/handle/provider-openai",
headers: {
"Content-Type": "text/plain;charset=UTF-8",
"Referer": "https://chatforai.store",
"accept": "*/*",
"X-Forwarded-For": generateRandomIP(),
"X-Real-IP": generateRandomIP(),
"Origin": "https://chatforai.store",
},
data: JSON.stringify({
"conversationId": chatforai_coverid,
"conversationType": "chat_continuous",
"botId": "chat_continuous",
"globalSettings": {
"baseUrl": "https://api.openai.com",
"model": "gpt-3.5-turbo",
"maxTokens": 2048,
"messageHistorySize": 5,
"temperature": 0.7,
"top_p": 1
},
"prompt": your_qus,
"messages": messageChain_chatforai,
"sign": sign,
"timestamp": now
}),
responseType: "stream"
}).then((stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
let finalResult = result.join("")
try {
console.log(finalResult)
addMessageChain(messageChain_chatforai, {
role: "assistant",
content: finalResult
})
showAnserAndHighlightCodeStr(finalResult)
} catch (e) {
console.log(e)
}
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
result.push(d)
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},function (reason) {
console.log(reason)
Toast.error("未知错误!" + reason.message)
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!" + ex.message)
});
});
}
async function MixerBox() {
GM_fetch({
method: "POST",
url: `https://chatai.mixerbox.com/api/chat/stream`,
headers: {
"Referer": "https://chatai.mixerbox.com/chat",
"origin": "https://chatai.mixerbox.com",
"accept": "*/*",
"content-type": "application/json",
"user-agent": "Mozilla/5.0 (Android 12; Mobile; rv:107.0) Gecko/107.0 Firefox/107.0"
},
data:JSON.stringify({
"prompt": [
{
"role": "user",
"content": your_qus
}
],
"lang": "zh",
"model": "gpt-3.5-turbo",
"plugins": [],
"pluginSets": [],
"getRecommendQuestions": true,
"isSummarize": false,
"webVersion": "1.4.5",
"userAgent": "Mozilla/5.0 (Android 12; Mobile; rv:107.0) Gecko/107.0 Firefox/107.0",
"isExtension": false
}),
responseType:"stream"
}).then((stream)=>{
let result = []
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.warn(d)
d.split("\n").forEach(item=>{
try {
if(item.startsWith("data")){
result.push(item.replace(/data:/gi,""))
}
}catch (ex){
}
})
showAnserAndHighlightCodeStr(result.join("").
replace(/\[space\]/gi," ").
replace(/\[NEWLINE\]/gi,"\n").
replace(/message_donedone/gi,"\n").
replace(/\[DONE\]/gi,"\n"))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},reason => {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!")
})
}
let ohmygpt_session_id = 'e0df5f92-0973-4465-93e1-dcb7cf482d7d';
let ohmygpt_token = '';
let ohmygpt_messageChain = [{"role":"system","content":"You are ChatGPT, a large language model trained by OpenAI."}]
async function OhMyGPT() {
addMessageChain(ohmygpt_messageChain, {"role":"user","content":your_qus},10)
const params = new URLSearchParams();
let sendData = {
session_id: ohmygpt_session_id ? ohmygpt_session_id:'e0df5f92-0973-4465-93e1-dcb7cf482d7d',
content: JSON.stringify(ohmygpt_messageChain),
max_context_length: '5',
params: '{"model":"gpt-3.5-turbo","temperature":1,"max_tokens":2048,"presence_penalty":0,"frequency_penalty":0,"max_context_length":5,"voiceShortName":"zh-CN-XiaoxiaoNeural","rate":1,"pitch":1}'
}
for (const key in sendData) {
params.append(key, sendData[key]);
}
const encodedData = params.toString();
GM_fetch({
method: "POST",
url: `https://www.ohmygpt.com/api/v1/ai/chatgpt/chat`,
headers: {
"Referer": "https://www.ohmygpt.com/",
"authorization": ohmygpt_token,
"origin": "https://www.ohmygpt.com",
"accept": "text/event-stream",
"content-type": 'application/x-www-form-urlencoded',
},
data: encodedData,
responseType:"stream"
}).then((stream)=>{
let result = []
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.warn(d)
result.push(d)
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},reason => {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!")
})
}
let minimax_group_id = localStorage.getItem("minimax_group_id")//"172531245...";
let minimax_api_key = localStorage.getItem("minimax_api_key")// "eyJhbGciOi.....
let minimax_messageChain = [];
async function miniMax() {
if(!minimax_group_id || !minimax_api_key){
showAnserAndHighlightCodeStr("group_id或api_key不存在,请到[https://api.minimax.chat/](https://api.minimax.chat/)注册,申请。然后点击 设置-》更新秘钥")
}
addMessageChain(minimax_messageChain, {
"sender_type": "USER",
"sender_name": "用户",
"text": your_qus
},10)
let sendData = {
"model": "abab5.5-chat",
"tokens_to_generate": 1024,
"temperature": 0.9,
"top_p": 0.95,
"stream": false,
"reply_constraints": {
"sender_type": "BOT",
"sender_name": "MM智能助理"
},
"sample_messages": [],
"plugins": [],
"messages": minimax_messageChain,
"bot_setting": [
{
"bot_name": "MM智能助理",
"content": "MM智能助理是一款由MiniMax自研的,没有调用其他产品的接口的大型语言模型。MiniMax是一家中国科技公司,一直致力于进行大模型相关的研究。"
}
]
}
GM_fetch({
method: "POST",
url:`https://api.minimax.chat/v1/text/chatcompletion_pro?GroupId=${minimax_group_id}`,
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${minimax_api_key}`,
},
data: JSON.stringify(sendData),
responseType:"stream"
}).then((stream)=>{
let result = []
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
addMessageChain(minimax_messageChain,{
"sender_type": "BOT",
"sender_name": "MM智能助理",
"text": result.join("")
},10)
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.warn(d)
result.push(JSON.parse(d).reply)
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},reason => {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!")
})
}
let pizzaSecret;
function PIZZA() {
abortXml = GM_xmlhttpRequest({
method: "POST",
url: "https://www.pizzagpt.it/api/chatx-completion",
headers: {
"content-type": "application/json",
"Referer": `https://www.pizzagpt.it/`,
"origin": `https://www.pizzagpt.it`,
"x-secret": pizzaSecret
},
data: JSON.stringify({
question: your_qus
}),
onload: function (res) {
if (res.status === 200) {
console.log('成功....')
console.log(res)
let rest = res.responseText
//console.log(rest.choices[0].text.replaceAll("\n",""))
try {
showAnserAndHighlightCodeStr(JSON.parse(rest).answer.content)
} catch (e) {
console.log(e)
Toast.error(rest)
}
} else {
console.log('失败')
console.log(res)
Toast.error('访问失败了')
}
},
responseType: "text",
onerror: function (err) {
console.error(err)
showAnserAndHighlightCodeStr("出错,[访问](https://www.pizzagpt.it/)")
}
});
}
let parentID_tianhu;
let tianhu_first = true;
function AITIANHU() {
let ops = {};
if (parentID_tianhu) {
ops = {parentMessageId: parentID_tianhu};
}
console.log(ops)
if (tianhu_first) {
GM_xmlhttpRequest({
method: "POST",
synchronous: true,
url: "https://www.aitianhu.com/api/session",
headers: {
"Content-Type": "application/json",
"Referer": "https://www.aitianhu.com/",
"origin": "https://www.aitianhu.com",
"accept": "application/json, text/plain, */*"
},
onload: function (res) {
console.log(res)
}
})
tianhu_first = false;
}
abortXml = GM_xmlhttpRequest({
method: "POST",
url: "https://5i6kbc.aitianhu1.top/api/please-donot-reverse-engineering-me-thank-you",
headers: {
"Content-Type": "application/json",
"Referer": "https://5i6kbc.aitianhu1.top",
"origin": "https://5i6kbc.aitianhu1.top",
"accept": "application/json, text/plain, */*"
},
data: JSON.stringify({
"prompt": your_qus,
"options": ops,
"model": "gpt-3.5-turbo",
"OPENAI_API_KEY": "sk-AItianhuFreeForEveryone",
"systemMessage": "You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully. Respond using markdown.",
"temperature": 0.8,
"top_p": 1
}),
onloadstart: (stream) => {
let result = "";
const reader = stream.response.getReader();
// console.log(reader.read)
let finalResult;
reader.read().then(function processText({done, value}) {
if (done) {
return;
}
const chunk = value;
result += chunk;
try {
// console.log(normalArray)
let byteArray = new Uint8Array(chunk);
let decoder = new TextDecoder('utf-8');
console.log(decoder.decode(byteArray))
let jsonLines = decoder.decode(byteArray).split("\n");
let nowResult = JSON.parse(jsonLines[jsonLines.length - 1])
if (nowResult.text) {
console.log(nowResult)
finalResult = nowResult.text
showAnserAndHighlightCodeStr(finalResult)
}
if (nowResult.id) {
parentID_tianhu = nowResult.id;
}
} catch (e) {
}
return reader.read().then(processText);
});
},
responseType: "stream",
onerror: function (err) {
console.log(err)
Toast.error("未知错误!")
}
})
}
//https://ai1.chagpt.fun/
function CVEOY() {
let baseURL = "https://free-api.cveoy.top/";
GM_xmlhttpRequest({
method: "POST",
url: baseURL + "v3/completions",
headers: {
"Content-Type": "application/json",
"origin": "https://ai1.chagpt.fun",
"Referer": baseURL
},
data: JSON.stringify({
prompt: your_qus
}),
onloadstart: (stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
try {
let finalResult = result.join("")
console.log(finalResult)
showAnserAndHighlightCodeStr(finalResult)
} catch (e) {
console.log(e)
Toast.error("未知错误!")
}
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
if(d.match(/wxgpt@qq.com/gi)){
d = d.replace(/wxgpt@qq.com/gi,"")
}
result.push(d);
console.log(d)
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},
responseType: "stream",
onerror: function (err) {
console.log(err)
Toast.error("未知错误!")
}
});
}
//获取A类网站key 2023年5月3日
async function setNormalKey(url) {
let response = await GM_fetch({
method: "GET",
url: url,
headers: {
"Referer": url+"/",
"origin": url,
"upgrade-insecure-requests":"1"
}
});
let resp = response.responseText;
if(!resp){
response = await GM_fetch({
method: "GET",
url: url,
headers: {
"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Referer": url+"/",
"origin": url,
"cookie":"_h=_1",
"upgrade-insecure-requests":"1"
}
});
resp = response.responseText;
}
let regex = /component-url="(.*?)"/i;
let match = resp.match(regex);
let jsurl = match[1];
console.log("js url:" + jsurl);
if (!jsurl) {
//错误
console.log(resp)
Toast.error("未知错误!")
return
}
let rr = await GM_fetch({
method: "GET",
url: url + jsurl,
headers: {
"Referer": url+"/",
"origin": url,
"cookie":"_h=_1"
}
});
resp = rr.responseText;
regex = /\`\$\{\w\}:\$\{\w\}:(.*?)\`/i;
match = resp.match(regex);
let key = match[1];
console.log(url+":key:",key)
return key
}
let messageChain9 = [];//FRECHAT
function FRECHAT() {
let now = Date.now();
generateSignatureWithPkey({
t: now,
m: your_qus || "",
pkey: ""
}).then(sign => {
addMessageChain(messageChain9, {role: "user", content: your_qus})//连续话
console.log(sign)
GM_fetch({
method: "PUT",
url: "https://demo-9elp.onrender.com/single/chat_messages",
headers: {
"Content-Type": "application/json",
"Referer": "https://e10.frechat.xyz",
"accept": "*/*"
},
data: JSON.stringify({
"messages": messageChain9,
"model": "THUDM/glm-4-9b-chat"
}),
responseType: "stream"
}).then((stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
let finalResult = result.join("")
try {
console.log(finalResult)
addMessageChain(messageChain9, {
role: "assistant",
content: finalResult
})
showAnserAndHighlightCodeStr(finalResult)
} catch (e) {
console.log(e)
}
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
result.push(d)
showAnserAndHighlightCodeStr(result.join("")
.replace(/muspimerol/gi,""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},function (reason) {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!")
});
});
}
//https://s.aifree.site/
let messageChain_aifree = []
function AIFREE() {
let now = Date.now();
let Baseurl = `https://am.aifree.site/`
generateSignatureWithPkey({
t:now,
m: your_qus || "",
pkey: {}.PUBLIC_SECRET_KEY || ""
}).then(sign => {
addMessageChain(messageChain_aifree, {role: "user", content: your_qus})//连续话
console.log(sign)
GM_fetch({
method: "POST",
url: Baseurl + "api/generate",
headers: {
"Content-Type": "text/plain;charset=UTF-8",
"Referer": Baseurl,
"accept": "application/json, text/plain, */*"
},
data: JSON.stringify({
messages: messageChain_aifree,
time: now,
pass: null,
sign: sign
}),
responseType: "stream"
}).then((stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
let finalResult = result.join("")
try {
console.log(finalResult)
addMessageChain(messageChain_aifree, {
role: "assistant",
content: finalResult
})
showAnserAndHighlightCodeStr(finalResult)
if(finalResult.includes("Invalid signature") || finalResult.includes("exceeded your current")){
Toast.error(`无效或过期,请到设置更新key`)
}
} catch (e) {
console.log(e)
}
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
result.push(d)
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},function (reason) {
console.log(reason)
Toast.error("未知错误!" + reason.message)
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!" + ex.message)
});
});
}
let formatTime = () => {
let padZero = (num) => {
// 如果数字小于 10,前面补一个 0
return num < 10 ? `0${num}` : num;
}
const now = new Date(); // 获取当前时间
const hours = now.getHours(); // 获取小时
const minutes = now.getMinutes(); // 获取分钟
const seconds = now.getSeconds(); // 获取秒数
// 格式化为 HH:MM:SS 的形式
return `${padZero(hours)}:${padZero(minutes)}:${padZero(seconds)}`;
}
let cleandxid = generateRandomString(21);
let cleandxList = [];
function CLEANDX() {
let Baseurl = "https://c3.a0.chat/";
console.log(formatTime())
cleandxList.push({"content": your_qus, "role": "user", "nickname": "我", "time": `${formattedDate()} ${formatTime()}`, "isMe": true})
cleandxList.push({"content":"正在思考中...","role":"assistant","nickname":"小助手","time": `${formattedDate()} ${formatTime()}`,"isMe":false})
console.log(cleandxList)
console.log(cleandxid)
if (cleandxList.length > 6){
cleandxList = cleandxList.shift();
}
abortXml= GM_xmlhttpRequest({
method: "POST",
url: Baseurl + "v1/chat/gpt/",
headers: {
"Content-Type": "application/json",
"X-Forwarded-For": generateRandomIP(),
"Referer": Baseurl,
"accept": "application/json, text/plain, */*"
},
data: JSON.stringify({
"list": cleandxList,
"id": cleandxid,
"title": your_qus,
"prompt": "",
"temperature": 0.5,
"models": "0",
"time": `${formattedDate()} ${formatTime()}`,
"continuous": true
}),
onloadstart: (stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
let finalResult = result.join("")
try {
console.log(finalResult)
cleandxList[cleandxList.length - 1] = {
"content": finalResult,
"role": "assistant",
"nickname": "小助手",
"time": `${formattedDate()} ${formatTime()}`,
"isMe": false
};
showAnserAndHighlightCodeStr(finalResult)
} catch (e) {
console.log(e)
}
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.log(d)
result.push(d)
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},
responseType: "stream",
onerror: function (err) {
console.log(err)
Toast.error("未知错误!" + err.message)
}
});
}
//https://www.promptboom.com/
//var promptboom_did = generateRandomString(32)
let promptboom_did = 'dd633043916550bea93f56e1af08debd'
let promptboom_token = ''
let promptboom_url = ''
let promptboom_version = '1.0'
async function PRTBOOM() {
addMessageChain(messageChain10, {role: "user", content: your_qus})//连续话
const t = Date.now()
const r = t + ":" + "question:" + promptboom_token
const sign = CryptoJS.SHA256(r).toString();
console.log(sign)
let request_json = {
'did': promptboom_did ? promptboom_did : 'dd633043916550bea93f56e1af08debd',
'chatList': messageChain10,
'special': {
'time': t,
'sign': sign,
'referer': "no-referer",
'path': "https://powerchat.top/chat/PowerChat"
}
};
let raw_requst_json = {
'data': btoa(unescape(encodeURIComponent(JSON.stringify(request_json))))
};
console.log(raw_requst_json)
GM_fetch({
method: "POST",
url: promptboom_url ? promptboom_url : 'https://api2.promptboom.com/cfdoctetstream',
headers: {
"Content-Type": "application/json",
"version": promptboom_version,
"origin": "https://powerchat.top",
"Referer": "https://powerchat.top/",
"accept": "*/*",
},
data: JSON.stringify(raw_requst_json),
responseType: "stream"
}).then((stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
let finalResult = result.join("")
try {
console.log(finalResult)
addMessageChain(messageChain10, {
role: "assistant",
content: finalResult
})
showAnserAndHighlightCodeStr(finalResult)
} catch (e) {
console.log(e)
}
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
result.push(d.replace(//gi,''))
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},(reason)=>{
console.log(reason)
Toast.error("未知错误!" + reason.message)
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!" + ex.message)
});
/* let rootDomain = "promptboom.com";
let apiList = [`https://api2.${rootDomain}/cfdoctetstream`, `https://api2.${rootDomain}/cfdoctetstream2`, `https://api2.${rootDomain}/cfdoctetstream3`]
apiList.sort(() => Math.random() - 0.5);
let apiListBackup = [`https://api2.${rootDomain}/cfdoctetstream4`, `https://api2.${rootDomain}/cfdoctetstream5`, `https://api2.${rootDomain}/cfdoctetstream6`]
let finalApiList = apiList.concat(apiListBackup)
for (let cfdoctetstream_url of finalApiList) {
console.log(cfdoctetstream_url)
break;
}*/
}
let messageChain_anseapp = [];
async function ANSEAPP() {
let baseURL = "https://forward.free-chat.asia/";
addMessageChain(messageChain_anseapp, {role: "user", content: your_qus})//连续话
GM_fetch({
method: "POST",
url: baseURL + "v1/chat/completions",
headers: {
"Content-Type": "application/json",
"authorization": `Bearer undefined`,
"Referer": 'https://anse.free-chat.asia/'
},
data: JSON.stringify({
"model": "gpt-3.5-turbo-16k",
"messages": messageChain_anseapp,
"temperature": 0.7,
"max_tokens": 4096,
"stream": true
}),
responseType: "stream"
}).then((stream) => {
let result = [];
let finalResult = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
finalResult = result.join("")
addMessageChain(messageChain_anseapp,
{role: "assistant", content: finalResult.replace(/muspimerol/gi, "")}
)//连续话
showAnserAndHighlightCodeStr(finalResult.replace(/muspimerol/gi, ""))
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.log("raw:", d)
let dd = d.replace(/data: /g, "").split("\n\n")
console.log("dd:", dd)
dd.forEach(item => {
try {
let delta = JSON.parse(item).choices[0].delta.content
result.push(delta)
showAnserAndHighlightCodeStr(result.join("").replace(/muspimerol/gi, ""))
} catch (e) {
}
})
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},function (err) {
console.error(err)
Toast.error("未知错误!" + err.message)
})
}
function TDCHAT(){
abortXml = GM_xmlhttpRequest({
method: "POST",
url: "http://7shi.zw7.lol/chat.php",
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Referer": "http://7shi.zw7.lol/",
"accept": "application/json, text/plain, */*"
},
data: `id=3.5&key=&role=&title=&text=${encodeURIComponent(your_qus).replace(/%/g, '‰')}&length=${your_qus.length}&stream=1`,
onloadstart: (stream) => {
let result = [];
let finalResult = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
finalResult = result.join("")
showAnserAndHighlightCodeStr(finalResult.replace(/tdchat/gi,""))
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.log("raw:",d)
let dd = d.replace(/data: /g, "").split("\n\n")
console.log("dd:",dd)
dd.forEach(item=>{
try {
let delta = JSON.parse(item).choices[0].delta.content
result.push(delta)
showAnserAndHighlightCodeStr(result.join("").replace(/tdchat/gi,""))
}catch (e) {
}
})
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},
responseType: "stream",
onerror: function (err) {
console.log(err)
Toast.error("未知错误!" + err.message)
}
})
}
//
//23-4-25
function TOYAML() {
GM_fetch({
method: "GET",
url: "https://toyaml.com/stream?q="+encodeURI(your_qus),
headers: {
"Content-Type": "application/json",
"Referer": "https://toyaml.com/",
"accept": "*/*"
},
responseType: "stream"
}).then((stream) => {
let finalResult = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
return;
}
try {
// console.log(normalArray)
let byteArray = new Uint8Array(value);
let decoder = new TextDecoder('utf-8');
let nowResult = decoder.decode(byteArray)
console.log(nowResult)
if(!nowResult.match(/答案来自/)){
finalResult.push(nowResult)
}
showAnserAndHighlightCodeStr(finalResult.join(""))
} catch (ex) {
console.log(ex)
}
return reader.read().then(processText);
});
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!" + ex.message)
})
}
//默认设置
setTimeout(()=>{
if(localStorage.getItem('GPTMODE')){
const selectEl = document.getElementById('modeSelect');
let optionElements = selectEl.querySelectorAll("option");
for (let op in optionElements) {
if(optionElements[op].value === localStorage.getItem('GPTMODE')){
optionElements[op].setAttribute("selected", "selected");
break;
}
}
}
if(localStorage.getItem('gpt_font_size')){
document.querySelector("#gptDiv").style.fontSize = localStorage.getItem('gpt_font_size');
}
//禁用历史
if(localStorage.getItem('history_disable')){
let dis = localStorage.getItem('history_disable');
history_disable = (dis === 'true' ? true : false);
}
},1000)
})();